perm filename HOT[NS,SYS] blob
sn#117846 filedate 1974-09-04 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 HOT
C00009 ENDMK
C⊗;
;HOT
TITLE HOT line to the AP news
IFNDEF DEBUG, <DEBUG←←0>
F←0
A←1
B←2
C←3
D←4
E←5
L←6
M←7
N←10
Q←11
R←12
W←13
X←14
Y←15
Z←16
P←17
IFN DEBUG, <
FILER: BLOCK 2000
>
DEFINE EACH {FOR @! N ε {01}} ;LIST OF WIRE NUMBERS
CODE: 0 ;FILER SHOULD HAVE 'HOT' IN THIS WORD
SBUF: EACH {
SBUF!N: BLOCK LSPCL}
SPOINT: EACH {
SPTR!N: 0}
LJOBRD←←.-CODE
;PTRS TO FRONT OF EACH WIRE'S BUFFER
FRONT: EACH {
SBUF!N}
JBRDBK: SIXBIT /[-NS-]/ ;NAME OF JOB WE WANT TO JOBRD
-LJOBRD,,140 ;NEGATIVE WORD COUNT,,HIS ADDRESS
CODE ;MY ADDRESS
TTMS: SIXBIT /TTY/ ;TTYMES HEADER
0
LUZ: ASCIZ/...
(text lost by HOT)...
/
NAME: [ASCIZ /New York Times News Service/]
[ASCIZ /Associated Press/]
LPDL←←10
PDL: BLOCK LPDL
INTRPT: UWAIT ;MAKE SURE SLEEP ENDS NOW
SETOM INTFLG#
DISMIS
IFN DEBUG, <
JRST REDALL ;START AT SA-1 TO READ IN ALL OF FILER'S CORE IMAGE
>
HOT: RESET
MOVEI Z,1 ;CODE OF CURRENT WIRE SERVICE--DEFAULT IS AP
MOVEI A,REE
MOVEM A,JOBREN↑
MOVEI A,INTRPT
MOVEM A,JOBAPR↑
MOVSI A,20000 ;INTERRUPT ON TTY INPUT
INTENB A,
MOVEI A,CODE
MOVEM A,JBRDBK+2 ;ADDRESS WHERE JOBRD PUTS DATA
IFN DEBUG,<
SETZM DELTA#
>
SETZM ALLOK
RESCAN CCOUNT# ;RESCAN MONITOR COMMAND
MOVE E,CCOUNT
HOT1: INCHSL C ;GET NEXT CHAR IF ANY
JRST REE ;NONE
CAIE C,";"
SOJG E,HOT1
JUMPG E,TTYIN ;JUMP IF FOUND SEMICOLON
REE: MOVE P,[IOWD LPDL,PDL]
SETZM INTFLG#
SETO A,
CALLI A,400066
TLZ A,777776
HLLZM A,ALLOK#
TLNN A,1
MOVEI Z,0
MOVE A,[-LJOBRD,,140]
MOVEM A,JBRDBK+1 ;IN CASE ERROR CODE OVERWROTE THIS WORD
REE1: MOVEI A,JBRDBK
JOBRD A,
JRST NOREAD
MOVE B,SPOINT(Z) ;BYTE POINTER TO CURRENT PLACE IN BUFFER
ADDI B,2 ;MAKE INTO PTR TO OLDEST TEXT IN BUFFER
OUTSTR [ASCIZ/ .../]
OUTSTR @NAME(Z)
OUTSTR [ASCIZ/...
/]
JRST MAIN0 ;TYPE OUT INITIAL CONTENTS OF BUFFER
MAIN: MOVEI A,JBRDBK
JOBRD A,
JRST NOREAD
MAIN0: MOVE E,CODE
CAIE E,'HOT' ;DOES FILER HAVE RIGHT CODE?
IFN DEBUG, <
JRST SEARCH
>
IFE DEBUG, <
JRST [MOVEI A,3 ;NO, TELL HIM HOT LINE IS DOWN
JRST NOREA1]
>
MOVE E,SPOINT(Z) ;PTR TO LAST BYTE OF DATA IN BUFFER
CAMN E,B ;HAS MORE DATA APPEARED?
JRST DOWAIT ;NO
;HERE IS A KLUDGE TO AVOID MISSING SINGLE CHARACTERS IN THE BUFFER NOW AND THEN
MOVE D,E
ADDI D,CODE-140
IFN DEBUG,<
SUB D,DELTA
>
LDB C,D
JUMPN C,.+2 ;ZERO MEANS THE IBP HAS BEEN DONE, BUT NOT THE DPB
ADD E,[070000,,0] ; SO BACK UP THE BYTE POINTER TO LAST REAL CHAR
MOVEI C,(B) ;SAVE ADDRESS OF OLD PLACE
ADDI B,CODE-140 ;MAKE INTO BYTE POINTER IN OUR CORE IMAGE
IFN DEBUG,<
SUB B,DELTA
>
TLZ B,7777 ;CLEAR COUNT FIELD FOR TTYMES PTR
MOVEM B,TTMS+1 ;STORE TTYMES PTR
MOVEI A,TTMS
SKIPE INTFLG
JRST TTYIN
TTYMES A, ;TYPE OUT REMAINDER OF BUFFER
JFCL
CAILE C,(E) ;HAS PTR WRAPPED AROUND THIS TIME?
OUTSTR @FRONT(Z) ;YES, TYPE OUT FRONT PART OF BUFFER
MOVEI A,5 ;WAIT 5 SECS IF GOT SOME TEXT THIS TIME
SKIPA B,E
DOWAIT: MOVEI A,=10 ;WAIT 10 SECS IF GOT NO TEXT THIS TIME
SKIPN INTFLG
SLEEP A,
SKIPN INTFLG
JRST MAIN
TTYIN: SETZM INTFLG
INCHSL A
JRST MAIN
CLRBFI
OUTSTR [ASCIZ/
/]
TRZ A,40
CAIN A,"A"
TDZA Z,Z ;AP
CAIE A,"N"
TRCA Z,1 ;NEXT WIRE
TDZ Z,Z ;NYT
JRST REE
NOREAD: HRRZ A,JBRDBK+1 ;GET JOBRD ERROR CODE
NOREA1: OUTSTR [ASCIZ /
Sorry -- cannot run hot line now.
/]
CAIGE A,ERRMAX
OUTSTR @ERROR(A)
EXIT
ERROR: [0] ;NO SUCH ERROR CODE
[0] ;NON EXISTENT JOB NUMBER (JOB NUMBER 0)
[ASCIZ /Confusion reigns with the news phantoms./];ambiguous job name
[ASCIZ /Hot line is down./] ;NO SUCH JOB NAME
[0]
,@.-2
ERRMAX←←.-ERROR
IFN DEBUG,<
SEARCH: MOVE A,[-2000,,0]
MOVEM A,JBRDBK+1
MOVEI A,FILER
MOVEM A,JBRDBK+2
MOVEI B,'HOT'
OUTSTR [ASCIZ/SEARCHING.../]
SEARC0: MOVEI A,JBRDBK
JOBRD A,
JRST NOREAD
MOVE A,[-2000,,FILER]
CAME B,(A)
AOBJN A,.-1
JUMPL A,FOUND
MOVEI A,2000
ADDM A,JBRDBK+1
JRST SEARC0
FOUND: HRRZ B,JBRDBK+1 ;ADDRESS IN FILER
ADDI B,-FILER(A) ;LOCATION WITHIN 1K
HRRM B,JBRDBK+1
SUBI B,140
MOVEM B,DELTA#
MOVEI B,-LJOBRD
HRLM B,JBRDBK+1 ;NEGATIVE JOBRD WORD COUNT
MOVEI B,CODE
MOVEM B,JBRDBK+2
OUTSTR [ASCIZ/
/]
JRST REE1
REDALL: MOVSI A,-2000
MOVEM A,JBRDBK+1
MOVEI A,FILER
MOVEM A,JBRDBK+2
MOVEI A,JBRDBK
JOBRD A,
JRST NOREAD
JRST @JOBDDT↑
>;END DEBUG
UUCODE: HALT .
END HOT